﻿using System.Collections.Generic;
using ActivateYourGlutes.Model.Contracts;

namespace ActivateYourGlutes.Model.Providers
{
    public interface IGoalProvider : IProviderBase
    {
        /// <summary>
        /// Returns the recently achieved goals for the given account
        /// </summary>
        IEnumerable<Goal> RecentlyAchievedGoals(Account account);
        /// <summary>
        /// Returns all active goals for the account
        /// </summary>
        IEnumerable<Goal> ActiveGoals(Account account);
        /// <summary>
        /// Add a goal
        /// </summary>
        void Add(Goal goal, Account account, UserLocaleSettings settings);
        /// <summary>
        /// Returns a template goal that can be used as the basis for creating a new one
        /// </summary>
        Goal Template(Account account);
        /// <summary>
        /// Returns a goal based on an id
        /// </summary>
        Goal GetGoalById(Account requestingAccount, int id);
        /// <summary>
        /// Deactivates the specified goal
        /// </summary>
        void Deactivate(Account deactivatingAccount, Goal goal);
    }
}